package arithmetic3.sort;

import java.util.Arrays;

/**
 * @author 姚凤桥
 * @Date 2021/12/14 11:28
 * @Description: 插入排序
 * 将待排序列分成两个子序列：一个有序序列和一个无序序列，有序序列初始化长度为1，无序序列初始化长度为length-1
 * 每次取无序序列的第一个元素，来跟有序序列作比较，将其插入到适当的位置,让后有序序列长度+1 无序序列长度-1
 * 直到无序序列长度为0为止
 */
public class InsertSort {
    public static void main(String[] args) {
        int[] arr = {5, 4, 3, 2, 1};
        insertSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void insertSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            int temp = arr[i + 1];
            int insertIndex = i + 1;
            for (int j = i; j >= 0; j--) {
                if (arr[j] > temp) {
                    arr[j + 1] = arr[j];
                    insertIndex--;
                } else {
                    break;
                }
            }
            arr[insertIndex] = temp;
        }
    }
}
